代码看不明白!高手帮我看看!
//
// Generic Windows program template
//
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <windows.h>
#include <winddi.h>
#include <tchar.h>
#include <winbase.h>
#include <winreg.h>
CHAR* programName; // program name
HINSTANCE appInstance; // handle to the application instance
LPSTR driverName = "Microsoft Mirror Driver";
LPSTR dispCode[7] = {
"Change Successful",
"Must Restart",
"Bad Flags",
"Bad Parameters",
"Failed",
"Bad Mode",
"Not Updated"};
LPSTR GetDispCode(INT code)
{
switch (code) {
case DISP_CHANGE_SUCCESSFUL: return dispCode[0];
case DISP_CHANGE_RESTART: return dispCode[1];
case DISP_CHANGE_BADFLAGS: return dispCode[2];
case DISP_CHANGE_BADPARAM: return dispCode[3];
case DISP_CHANGE_FAILED: return dispCode[4];
case DISP_CHANGE_BADMODE: return dispCode[5];
case DISP_CHANGE_NOTUPDATED: return dispCode[6];
default:
static char tmp[MAX_PATH];
sprintf(&tmp[0],"Unknown code: %08x\n", code);
return (LPTSTR)&tmp[0];
}
return NULL; // can't happen
}
//
// Handle window repaint event
//
VOID
DoPaint(
HWND hwnd
)
{
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint(hwnd, &ps);
COLORREF red = 0x00FF0000;
HBRUSH hbr = CreateSolidBrush(red);
RECT r;
r.left = ps.rcPaint.left;
r.top = ps.rcPaint.top;
r.right = ps.rcPaint.right;
r.bottom = ps.rcPaint.bottom;
FillRect(hdc, &r, hbr);
EndPaint(hwnd, &ps);
}
//
// Window callback procedure
//
LRESULT CALLBACK
MyWindowProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch (uMsg)
{
case WM_PAINT:
DoPaint(hwnd);
break;
case WM_DISPLAYCHANGE:
{
WORD cxScreen = LOWORD(lParam);
WORD cyScreen = HIWORD(lParam);
WPARAM format = wParam;
// Add hook to re-initialize the mirror driver's surface
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
//
// Create main application window
//
VOID
CreateMyWindow(
//********************************************************************
PCSTR title
)
#define MYWNDCLASSNAME "Mirror Sample"
{
//********************************************************************
//
// Register window class if necessary
//
static BOOL wndclassRegistered = FALSE;
if (!wndclassRegistered)
{
WNDCLASS wndClass =
{
0,
MyWindowProc,
0,
0,
appInstance,
NULL,
NULL,
NULL,
NULL,
MYWNDCLASSNAME
};
RegisterClass(&wndClass);
wndclassRegistered = TRUE;
}
HWND hwnd;
INT width = 300, height = 300;
//********************************************************************
hwnd = CreateWindow(
MYWNDCLASSNAME,
title,
WS_OVERLAPPED | WS_SYSMENU | WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
width,
height,
NULL,
NULL,
appInstance,
NULL);
if (hwnd == NULL)
{
printf("Can't create main window.\n");
exit(-1);
}
}